////////////////////////////////////////////////////////////////////////////////

#ifndef _GAMEOBJECT_H_
#define _GAMEOBJECT_H_

////////////////////////////////////////////////////////////////////////////////

#ifndef _PHYSICALOBJECT_H_
#include "physicalobject.h"
#endif

////////////////////////////////////////////////////////////////////////////////


/** Base class for different game objects
*
*  @author   Anastasia Karpinska
*  @since    Nov 10th, 2009
*  @updated  Nov 10th, 2009
*/
class GameObject : public PhysicalObject
{
////////////////////////////////////////////////////////////////////////////////

public:

////////////////////////////////////////////////////////////////////////////////


    /** Constructor */
    GameObject( int _ID,
                PE::Point _position,
                PE::Vector _velocity,
                double _mass,
                double _radius,
                double _resistanceCoeff = 0.0);


    /** Destructor */
    virtual ~GameObject();


////////////////////////////////////////////////////////////////////////////////


    /** Check is player */
    virtual bool IsPlayer() const;


    /** Check is bullet */
    virtual bool IsBullet() const;


    /** Check is wall */
    virtual bool IsWall() const;


    /** Returns object's ID */
    int GetID() const;


    /** Equality */
    bool operator==( const GameObject& _obj ) const;


////////////////////////////////////////////////////////////////////////////////

private:

////////////////////////////////////////////////////////////////////////////////


    /** Object's ID */
    int m_ID;


////////////////////////////////////////////////////////////////////////////////
};


// Converts physical object to game object, should be replaced to utilities
const GameObject* GetGameObject( const PhysicalObject* _obj );


////////////////////////////////////////////////////////////////////////////////

#endif

////////////////////////////////////////////////////////////////////////////////

